﻿#region Using directives

using System;
using System.Collections.Generic;
using System.Text;

using Weazel.Badger.Vhdl.Types;
using Weazel.Badger.Vhdl.Statements;

#endregion

namespace Weazel.Badger.Vhdl.Expressions
{
  public abstract class Expression : TypedComponent, IComponent
  {
		private IComponent parentContainer;
		public IComponent ParentContainer
		{
			get { return parentContainer; }
			set { parentContainer = value; }
		}

    private Gezel.Model.Expression referenceExpression;
    public Gezel.Model.Expression ReferenceExpression
    {
      get
      {
        return referenceExpression;
      }

      set
      {
        referenceExpression = value;
      }
    }

    public void Resolve()
    {
    }

    public Expression(
			IComponent parentContainer, 
			Types.Type type, 
			GezelType gezelType, 
			Gezel.Model.Expression refExpr
		) 
			: base(type, gezelType)
    {
			this.parentContainer = parentContainer;
      this.referenceExpression = refExpr;
    }

    public Expression(
			IComponent parentContainer,
			Types.Type type, 
			GezelType gezelType
		) 
			: base(type, gezelType) 
    {
			this.parentContainer = parentContainer;
      this.referenceExpression = null;
    }
  }
}
